import static org.junit.Assert.assertEquals;

public class NGuessNumberTest {
    public static void main(String[] args) {
        NGuessNumber nGuessNumber = new NGuessNumber();


    }

    public void getPlayerInputTest() {
        //使用断言检查玩家猜测的数字数量是否为4。
        int numsize = 4;
        NGuessNumber nGuessNumber = new NGuessNumber();

        assertEquals(numsize, nGuessNumber.guesslist.length);
        System.out.println("用户输入的数字数量为4，正确");
    }

    public static void generateAnswer() {
        int s = 4;
        NGuessNumber nGuessNumber = new NGuessNumber();

        assertEquals(s, nGuessNumber.generateAnswer().length);
        System.out.println("数字数量为4，正确");

        int num[] = nGuessNumber.generateAnswer();
        boolean flag = false;
        int numsize = 0;

        for (int i = 0; i < s; i++) {
            if (num[i] >= 0 && num[i] <= 9) {
                numsize = 1;
            } else {
                numsize = 0;
            }
            for (int l = 0; l <= i; l++) {
                if (i != l) {
                    if (num[i] == num[l]) {
                        flag = false;
                    } else {
                        flag = true;
                    }
                }
            }
        }
        assertEquals(true, flag);
        System.out.println("其中无重复数字，正确");

        assertEquals(1, numsize);
        System.out.println("数字都在0-9之间，正确");
    }

    public void compareGuessAnswerTest() {
        NGuessNumber nGuessNumber = new NGuessNumber();

        int testguess[] = nGuessNumber.guesslist;
        int testnum[] = nGuessNumber.generateAnswer();
        int a_num = 0;
        int b_num = 0;
        for (int i = 0; i < testnum.length; i++) {
            for (int j = 0; j < testnum.length; j++) {
                if (i != j) {
                    if (testnum[i] == testguess[j]) {
                        b_num++;
                    }
                } else {
                    if (testnum[i] == testguess[j]) {
                        a_num++;
                    }
                }
            }
        }
        String s = a_num + "A" + b_num + "B\n" + "A表示存在且位置正确的数字个数，B表示存在且位置不正确的数字个数！\n" + "如：1A2B,表示你猜测的四个数字有3个是对的，有一个位置对，两个位置不对。";

        assertEquals(s, nGuessNumber.compareGuessAnswer());

        System.out.println();
        System.out.println("测试比较玩家猜测和答案后，返回的提示信息，正确");
    }

    public void isWin() {
        NGuessNumber nGuessNumber = new NGuessNumber();

        if (nGuessNumber.isWin() == true) {
            assertEquals(true, nGuessNumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确");
        } else if (nGuessNumber.isWin() == false) {
            assertEquals(false, nGuessNumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确");
        } else {
            assertEquals(true, nGuessNumber.isWin());
            assertEquals(false, nGuessNumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型错误");

        }
    }
}
